import router from '@/routers/index';
import { getFlatArr } from '@/utils/util';
// import { LOGIN_URL } from "@/config/config";
// import { ElNotification } from "element-plus";
import { AuthStore } from '@/stores/modules/auth';
// import { useFilterHandle } from '@/hooks/useFilterHandle';
import { GlobalStore } from '@/stores';
import { notFoundRouter } from '@/routers/modules/staticRouter';
// import { getConfig } from "@/api/modules/login";
// import { getRouteList } from "@/api/modules/login";
// 引入 views 文件夹下所有 vue 文件
const modules = import.meta.glob('@/views/**/*.vue');

/**
 * 初始化动态路由
 */
export const initDynamicRouter = async () => {
	// const { getDicData } = useFilterHandle();
	try {
		// 1.获取菜单列表 && 按钮权限（可合并到一个接口获取，根据后端不同可自行改造）
		// const data = await getConfig();
		// console.log(data);
		const authStore = AuthStore();
		const globalStore = GlobalStore();
		await authStore.getAuthMenuList();
		// 获取字典数据, 如果字典数据为空，则获取字典数据
		if (globalStore.dictData.length === 0) {
			// await getDicData();
		}
		// 获取系统参数
		// globalStore.setSysParams();

		// 2.判断当前用户有没有菜单权限
		// if (!authStore.authMenuListGet.length) {
		// 	ElNotification({
		// 		title: "无权访问",
		// 		message: "当前账号无任何菜单权限，请联系系统管理员！",
		// 		type: "warning",
		// 		duration: 3000
		// 	});
		// 	router.replace(LOGIN_URL);
		// 	return Promise.reject("No permission");
		// }

		// 3.添加动态路由
		const dynamicRouter = getFlatArr(JSON.parse(JSON.stringify(authStore.authMenuListGet)));
		// const dynamicRouter = authStore.authMenuListGet;
		// 如果不是嵌入别人系统可以使用动态路由，嵌入到别人系统的路由只能写死
		// const { data } = await getRouteList(); // 获取静态路由
		// const dynamicRouter = getFlatArr(data as Menu.MenuOptions[]);
		// console.log(authStore.authMenuListGet);
		// console.log(dynamicRouter);

		dynamicRouter.forEach((item: any) => {
			if (item.children) delete item.children;
			if (item.component) item.component = modules['/src/views' + item.component + '.vue'];
			console.log(item);
			if (item.meta.isFull) {
				router.addRoute(item);
			} else {
				router.addRoute('layout', item);
			}
		});
		console.log(router.getRoutes());
		// console.log(router);

		// 4.最后添加 notFoundRouter
		router.addRoute(notFoundRouter);
	} catch (error) {
		// 💢 当按钮 || 菜单请求出错时，重定向到登陆页
		// router.replace(LOGIN_URL);
		return Promise.reject(error);
	}
};
